BBB0 table:	0x2C each entry
  Unsure what this does.  Might even be part of debug for all I know
  Never threw a breakpoint in the first 0x200...

-

C0B0 table:	0x1C each entry
  Add +802AF4C0 to all offset values for runtime pointers
	animation table.
0x0	4	[float]
0x4	4	[float]
0x8	4	[float]
0xC	4	[float]
0x10	4	[float]
0x14	4	offset in animation binary
0x18	4	flag: 0,1,2

-

A870 intro table:	0x14 each entry
0x0	4	body
0x4	4	head	(-1=internal, FFFFFF9F=random)
0x8	2	string 1
0xA	2	string 2
0xC	2	string 3
0xE	2	unused
0x10	4	flag	(1 indicates only on extended intro)

8002B5E8	current entry in table
  only 3 text values - final is NULL

++++++++++
8002B5E8	current entry
8002B5EC	current animation
8002B5F0	# random animations
8002B5F4	current head?
8002B5F8	
8002B5FC	1 indicates in credits (not intro) mode
8002B600	character intro list
8002B8BC	random intro animation table
8002BA2C	
8002BA30	
8002BA34	
8002BA38	random rifles
8002BA50	random pistols

8002CD00	# random bodies
8002CD04	# random male heads
8002CD08	# random female heads
8002CD0C	random bodies/heads table
8002CE34	current random body
8002CE38	current random male head
8002CE3C	current random female head
-

7F01869C:	handle entries in character intros
LUI	T6,8003
LW	T6,A950 (T6)	T6=8002A950: ???	pointer to something...
ADDIU	SP,SP,FF48
LUI	T8,8003
SW	RA,001C (SP)
ADDIU	T8,T8,BA2C	T8=8002BA2C: three blank words prior to random rifles...
SW	T6,00B4 (SP)
LW	AT,0000 (T8)	AT=8002BA2C:	???
ADDIU	T7,SP,00A0
LW	T1,0004 (T8)	T1=8002BA30:	???
SW	AT,0000 (T7)
LW	AT,0008 (T8)	AT=8002BA34:	???
SW	T1,0004 (T7)
SW	AT,0008 (T7)
//7F0186D4:
JAL	7000A450	V0=rand
SW	R0,007C (SP)
LUI	T3,8003
LW	T3,B5FC (T3)	T3=8002B5FC: ???
ANDI	T2,V0,0001
SW	T2,0070 (SP)
BEQ	T3,R0,7F018718
LUI	T4,8003
LW	T4,B5E8 (T4)	T4=8002B5E8: current entry
BNEZ	T4,7F018718
NOP
//7F018700:
JAL	7000703C
ADDIU	A0,R0,7FFF
LUI	AT,8002
SW	R0,434C (AT)	0->8002434C
JAL	70006E7C
ADDIU	A0,R0,0002
//7F018718:	test if there *are* animations...
LUI	A0,8003
ADDIU	A0,A0,B8BC	A0=8002B8BC: random intro animation table
SLL	T5,R0,0x4
ADDU	T6,A0,T5
LW	T0,0000 (T6)	T0: animation value or -1 (ends list)
LUI	V1,8003
ADDIU	V1,V1,B5F0	V1=8002B5F0: # random animations
SW	R0,0000 (V1)	0->8002B5F0	blank # animations
BLTZ	T0,7F018760
OR	V0,R0,R0
ADDIU	T9,V0,0001
//7F018744:	if there are animations, get an accurate count
SLL	T7,T9,0x4
ADDU	T8,A0,T7
LW	T1,0000 (T8)	T1=animation #
SW	T9,0000 (V1)	update count
OR	V0,T9,R0
BGEZL	T1,7F018744
ADDIU	T9,V0,0001
//7F018760:
JAL	7000A450	V0=rand
NOP
LUI	V1,8003
ADDIU	V1,V1,B5F0	
LW	T2,0000 (V1)	T2=8002B5F0: # random animations
LUI	T4,8003
LW	T4,B5E8 (T4)	T4=8002B5E8: current entry
DIVU	V0,T2
MFHI	T3
LUI	AT,8003
SW	T3,B5EC (AT)	T3=8002B5EC: current animation
LUI	T6,8003
ADDU	T5,T5,T4	T5=current entry + skip value?
SLL	T5,T5,0x2
ADDIU	T6,T6,B600	T6=8002B600: character intro list
ADDU	A0,T5,T6
LW	T0,0000 (A0)	T0=body from list
LUI	T1,8003
SLL	T8,T7,0x4
ADDU	T1,T1,T8
//7F0187BC:
LW	T9,0004 (A0)	head value
LW	T1,B8C8 (T1)	T1=8002B8C8+:	last word (flag) in animation table entry
ADDIU	AT,R0,0016
BNEZ	T2,7F0187D4	OK if no animations
NOP
BREAK
//7F0187D4:
SW	T0,008C (SP)	save body
OR	T2,T0,R0
SW	T9,0088 (SP)	save head
BNE	T0,AT,7F01886C	branch if not the bond suit #16
SW	T1,006C (SP)
//7F0187E8-7F01886C	random bond lookup
JAL	7000A450	returns V0=random; fries AT,A0,A1,A2,V0
NOP
ADDIU	AT,R0,0005
DIVU	V0,AT
MFHI	T3
SLTIU	AT,T3,0005
BEQ	AT,R0,7F0188C0	if some crazy number, skip body and do heads
SLL	T3,T3,0x2
LUI	AT,8005
ADDU	AT,AT,T3
LW	T3,1AEC (AT)
JR	T3
NOP
//7F01881C:	(1) needless TLB pointer for suit=17
ADDIU	T4,R0,0017
ADDIU	T5,R0,004B
SW	T5,0088 (SP)
BEQ	R0,R0,7F0188C0
SW	T4,008C (SP)
//7F018830:	(2) needless TLB pointer for suit=18
ADDIU	T6,R0,0018
ADDIU	T0,R0,004B
SW	T0,0088 (SP)
BEQ	R0,R0,7F0188C0
SW	T6,008C (SP)
//7F018844:	(3) needless TLB pointer for suit=19
ADDIU	T9,R0,0019
ADDIU	T7,R0,004B
SW	T7,0088 (SP)
BEQ	R0,R0,7F0188C0
SW	T9,008C (SP)
//7F018858:	(4) needless TLB pointer for suit=5, head=4E
ADDIU	T8,R0,0005
ADDIU	T1,R0,004E
SW	T1,0088 (SP)
BEQ	R0,R0,7F0188C0
SW	T8,008C (SP)
//7F01886C:
LW	T2,008C (SP)	T2=body
ADDIU	AT,R0,0010
LW	T5,008C (SP)	T5=body
BNEL	T2,AT,7F0188A0	test if Nat
ADDIU	AT,R0,0009
//7F018880-7F0188A0	randomly select Jungle or skirt Nat
JAL	7000A450
NOP
ANDI	T3,V0,0001
BEQ	T3,R0,7F0188C0
ADDIU	T4,R0,004F
BEQ	R0,R0,7F0188C0
SW	T4,008C (SP)
ADDIU	AT,R0,0009
//7F0188A0:		test if trev
BNEL	T5,AT,7F0188C4
LW	T9,0088 (SP)	T9=head
//7F0188A8-7F0188C4	randomly select boiler or Janus Trev
JAL	7000A450
NOP
ANDI	T6,V0,0001
BEQ	T6,R0,7F0188C0
ADDIU	T0,R0,0008
SW	T0,008C (SP)
//7F0188C0:		!do the heads!
LW	T9,0088 (SP)
ADDIU	AT,R0,FF9F
BNEL	T9,AT,7F0188E0	branch if not FF9F...
LW	T7,00B4 (SP)
//7F0188D0:
JAL	7F023660	RETURNS V0=very random head
LW	A0,008C (SP)	A0=body
SW	V0,0088 (SP)
LW	T7,00B4 (SP)
//7F0188E0:
LUI	V0,0003
ORI	V0,V0,1160
ADDU	A0,T7,V0
ADDIU	A0,A0,003F
ORI	T8,A0,003F
XORI	A0,T8,003F
SW	V0,00B0 (SP)
ADDIU	A1,R0,01B8
JAL	7F0D2448:
			LUI	AT,8005
			SW	A0,EB00 (AT)	A0=8004EB00: 
			LUI	AT,8009
			SW	A1,E310 (AT)	A1=8004E310: 0x1B8
			LUI	AT,8009
			JR	RA
			SW	A2,E314 (AT)	A2=8004E314: 0x14A
ADDIU	A2,R0,014A
//7F018908:
LUI	A2,0001
ORI	A2,A2,9000	A2=00019000
ADDIU	A0,SP,0090
JAL	7F0CBAF4:
			ADDU	V0,A1,A2	V0=pointer+0x19000
			SW	A1,0000 (A0)	SAVE BASE
			SW	V0,0004 (A0)	SAVE END
			SW	A1,0008 (A0)	SAVE BASE
			JR	RA
			SW	V0,000C (A0)	SAVE END
LW	A1,00B4 (SP)
LW	T2,008C (SP)	T2=BODY
LUI	T4,8004
LW	A2,00B4 (SP)
SLL	T3,T2,0x2
ADDU	T3,T3,T2
LW	A3,00B0 (SP)
LUI	V1,0001
SLL	T3,T3,0x2
ADDIU	T4,T4,DE10	T4=8003DE10: body/head table
ORI	V1,V1,9000	V1=00019000
ADDU	V0,T3,T4	V0=table + offset*0x14
LW	A0,0000 (V0)	A0=BODY HEADER
ADDIU	T5,SP,0090
ADDU	A2,A2,V1
SUBU	A3,A3,V1
SW	A3,00B0 (SP)
SW	A2,00B4 (SP)
SW	T5,0010 (SP)
LW	A1,0004 (V0)	A1=BODY STRING LOOKUP TEXT
SW	V0,0024 (SP)	SAVE BODY ENTRY POINTER
JAL	7F0764A4
SW	A0,0080 (SP)
//7F018974:
LW	V0,0024 (SP)	V0=BODY ENTRY
JAL	7F0BD188
LW	A0,0004 (V0)	A0=BODY STRING LOOKUP TEXT
ADDIU	V1,V0,003F
LW	T9,00B0 (SP)
LW	T8,00B4 (SP)
ORI	T6,V1,003F
//7F018990:
LW	T2,0088 (SP)	T2=head
XORI	T0,T6,003F
SUBU	T7,T9,T0
ADDU	T1,T8,T0
SW	T7,00B0 (SP)
BLTZ	T2,7F018A18
SW	T1,00B4 (SP)
//7F0189AC:	load head, I assume
SLL	T3,T2,0x2
ADDU	T3,T3,T2
LUI	T4,8004
ADDIU	T4,T4,DE10
SLL	T3,T3,0x2
ADDU	V0,T3,T4
LW	A0,0000 (V0)
ADDIU	T5,SP,0090
SW	T5,0010 (SP)
LW	A1,0004 (V0)
SW	V0,0024 (SP)
OR	A2,T1,R0
OR	A3,T7,R0
JAL	7F0764A4
SW	A0,007C (SP)
LW	V0,0024 (SP)
JAL	7F0BD188
LW	A0,0004 (V0)
ADDIU	V1,V0,003F
LW	T9,00B0 (SP)
LW	T2,00B4 (SP)
ORI	T6,V1,003F
XORI	T0,T6,003F
SUBU	T8,T9,T0
ADDU	T3,T2,T0
SW	T8,00B0 (SP)
SW	T3,00B4 (SP)
//7F018A18:	
LW	A0,008C (SP)	A0=body
LW	A1,0088 (SP)	A1=head
LW	A2,0080 (SP)	A2=body header?
LW	A3,007C (SP)	A3=head header?
JAL	7F0234A8
SW	R0,0010 (SP)
//7F018A30:
LUI	V1,8003
ADDIU	V1,V1,B5F4	V1=8002BF54: 
LUI	A1,3DCC
SW	V0,0000 (V1)	save the returned data pointer
ORI	A1,A1,CCCD	A1=3DCCCCCD
JAL	7F06CE78:
			MTC1	A1,F12
			JR	RA
			SWC1	F12,0014 (A0)
OR	A0,V0,R0
LW	T4,006C (SP)	last word of animation - applied weapon sets!
ADDIU	AT,R0,0002
BEQ	T4,R0,7F018C40	if weapon value=0, branch
NOP
BNE	T4,AT,7F018AC0	if weapon value=1, branch
ADDIU	T8,SP,002C
//7F018A64:	2=rifles
LUI	T7,8003
ADDIU	T7,T7,BA38	T7=8002BA38: base for random rifles
LW	AT,0000 (T7)	AT=B8
LW	T6,0004 (T7)	T6=BC
ADDIU	T1,SP,0054
SW	AT,0000 (T1)
SW	T6,0004 (T1)
LW	T6,000C (T7)	T6=CF
LW	AT,0008 (T7)	AT=C5
SW	T6,000C (T1)
SW	AT,0008 (T1)
LW	AT,0010 (T7)	AT=B9
LW	T6,0014 (T7)	T6=D2
SW	AT,0010 (T1)
JAL	7000A450	V0=rand
SW	T6,0014 (T1)
ADDIU	AT,R0,0006
DIVU	V0,AT
MFHI	T0
SLL	T9,T0,0x2
ADDU	V1,SP,T9
BEQ	R0,R0,7F018B14
LW	V1,0054 (V1)	V1=random weapon stored to stack...
//7F018AC0:	1=pistols
LUI	T2,8003
ADDIU	T2,T2,BA50	T2=8002BA50: list of pistols
ADDIU	T4,T2,0024	T4=endpoint
//7F018ACC:	loopus
LW	AT,0000 (T2)	AT=current
ADDIU	T2,T2,000C	T2+=C (next 3)
ADDIU	T8,T8,000C	T8+=C
SW	AT,FFF4 (T8)
LW	AT,FFF8 (T2)
SW	AT,FFF8 (T8)
LW	AT,FFFC (T2)
BNE	T2,T4,7F018ACC	write all to stack...
SW	AT,FFFC (T8)
LW	AT,0000 (T2)	last entry...
JAL	7000A450	V0=rand
SW	AT,0000 (T8)
ADDIU	AT,R0,000A	At=#entries
DIVU	V0,AT
MFHI	T5
SLL	T1,T5,0x2	T1=rand# -> offset
ADDU	V1,SP,T1
LW	V1,002C (V1)	V1=random weapon stored to stack
//7F018B14:		if magnum, test doubling-up!
ADDIU	AT,R0,00BE
BNEL	V1,AT,7F018B38
ADDIU	AT,R0,00BB
JAL	7F01EAD0
SW	V1,0084 (SP)	
BNEZ	V0,7F018B34
LW	V1,0084 (SP)
ADDIU	A1,R0,00BF
ADDIU	AT,R0,00BB
//7F018B38:		if laser, test doubling-up!
BNEL	V1,AT,7F018B58
ADDIU	AT,R0,00D0
JAL	7F01EB20
SW	V1,0084 (SP)
BNEZ	V0,7F018B54
LW	V1,0084 (SP)
ADDIU	V1,R0,00BF
ADDIU	AT,R0,00D0
//7F018B58:		if golden gun, test doubling-up!
BNEL	V1,AT,7F018B78
SLL	T7,V1,0x2
JAL	7F01EB70
SW	V1,0084 (SP)
BNEZ	V0,7F018B74
LW	V1,0084 (SP)
ADDIU	V1,R0,00BF
SLL	T7,V1,0x2
//7F018B78:		load said object
SUBU	T7,T7,V1
LUI	T6,8004
ADDIU	T6,T6,A228
ETC...

//7F018C40:	0=unarmed; carry on with animation loading



//7F01A28C:	third text value
LUI	T4,8003
LW	T4,B5E8 (T4)	current entry
LUI	A0,8003
OR	S3,V0,R0
SLL	T9,T4,0x2
ADDU	T9,T9,T4
SLL	T9,T9,0x2	T9=entry * 0x14
ADDU	A0,A0,T9
JAL	7F0C1DD8
LHU	A0,B60C (A0)	A0=3rd txt ID


-
7F0C1DD8:	retrieve pointer to text (V0) from text ID (A0)
SRA	T6,A0,0xA
SLL	T7,T6,0x2
LUI	V0,8009
ADDU	V0,V0,T7
LW	V0,C640 (V0)
ANDI	T8,A0,03FF
SLL	T9,T8,0x2
ADDU	T0,V0,T9
LW	V1,0000 (T0)
OR	A0,R0,R0
BEQ	V1,R0,7F0C1E14
NOP
ADDU	A0,V1,V0
JR	RA
OR	V0,A0,R0
//7F0C1E14:
JR	RA
OR	V0,A0,R0
